package com.parenting.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.parenting.entities.SystemUserDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.parenting.feign.entities.ShopAndUserFeignDTO;
import com.parenting.model.IMPage;
import com.parenting.model.UserLowerDTO;
import com.parenting.request.*;
import com.parenting.request.wechat.ForgetPasswordRequest;
import com.parenting.response.AppletShopUserListResponse;
import com.parenting.response.ShopUserResponse;
import com.parenting.util.base.Result;

import java.util.List;

/**
 * <p>
 * 用户表信息 服务类
 * </p>
 *
 * @author 烟台业达-王世玺
 * @since 2021-08-11
 */
public interface SystemUserService extends IService<SystemUserDO> {

    /** 新增 用户
     * @param user
     */
     Result saveUser(ShopUserAddRequest user,String shopId);

    /****
     * 移动端 用户注册
     * @param user
     * @return
     */
    Result registerUser(AppletRegisterUser user);


//   /****
//     * @param user
//     * @return
//    */
//    Result  userForgetPassword(AppletRegisterUser user);


    /***
     * 修改用户信息
     * @param user
     */
    void updateUser(ShopUserUpdateRequest user);

    /***
     * 获得根据 店铺Id 与分页信息 获得 店员列表
     * @param userREQ
     */
    IPage<ShopUserResponse> findUserLisByShopId(ShopUserPageListRequest userREQ);

    /***
     * 保存 用户与 按钮资源的关系
     * @param userId
     * @param resourcesIds
     */
    void  saveUserAndResources(String userId, List<String> resourcesIds);

    /***
     * 根据用户删除 用户信息
     * @param userId
     */
    void  deleteUser(String userId);

    /***
     * 根据用户名查询用户信息
     * @param username
     * @return
     */
    SystemUserDO findUserByUserName(String username);

    /***
     * 根据 手机号 查询 用户信息
     * @param mobile
     * @return
     */
    SystemUserDO findUserByUserMobile(String mobile);

    /**
     * 根据 微信 openID 查询 用户信息
     * @param wxOpenId
     * @return
     */
    SystemUserDO findUserByUserWXOpenId(String wxOpenId);

    /**
     * 修改密码
     * @param req
     * @return
     */
    Result updatePassword(UserUpdatePasswordRequest req);

    /***
     * 微信端登录人的密码修改
     * @param req
     * @return
     */
    Result updateLoginUserPassword(UpdateLoginUserPasswordRequest req,String loginUserId);

    /****
     * 修改提现密码
     * @param extractPasswordRequest  修改内容
     * @param userId 当前登录人的ID
     * @return
     */
    Result updateExtractPassword(UpdateExtractPasswordRequest extractPasswordRequest,String userId);


    /****
     * 设置提现密码
     * @param extractPasswordRequest
     * @return
     */
    Result saveExtractPassword(AddExtractPasswordRequest extractPasswordRequest,String userId);


   /***
    * Feign Service 的接口定义 用于 店铺认领
    * @param shopAndUserFeignDTO
    */
   void  ShopAndUser(ShopAndUserFeignDTO shopAndUserFeignDTO);

    /****
     * 用于 B端小程序查询店铺员工的列表
     * @param request
     * @return
     */
    IMPage<AppletShopUserListResponse> getShopUserList(String ShopId,  AppletShopUserListRequest request);



      Result forgetPassword( ForgetPasswordRequest forgetPasswordRequest);


    List<UserLowerDTO> getUserLowerDtoByShopId(String shopId);
}
